package com.execdemo.demoorderservice.rabbitmq;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class RabbitService {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    /**
     * 向指定的交换机发送消息
     *
     * @param exchange 交换机名称，决定了消息将被发送到哪个交换机
     * @param routingKey 路由键，用于精确匹配交换机和队列的规则
     * @param message 要发送的消息内容，可以是任何对象，但需要与接收方的处理能力相匹配
     *
     * 此方法使用RabbitTemplate的convertAndSend方法，将消息转换为适当的格式并发送到指定的交换机和路由键
     * 它不关心消息是否被成功接收或处理，只负责发送
     *
     * @return 总是返回true，表示消息发送操作已经执行 不过，这并不意味着消息发送成功，只是表示发送操作已完成
     */
    public boolean sendMessage(String exchange, String routingKey, Object message) {
        rabbitTemplate.convertAndSend(exchange, routingKey, message);
        return true;
    }
}
